The following is a slightly abbreviated copy of a letter I wrote to Lotus (both US and UK). Lotus has not answered the letter. Hans G. Michna 74776,2361 ------------------------------------------------------------------------------ Lotus Development Corporation Munich, September 9, 1984 245 First Street USA-Cambridge, MA 02142 Symphony Technical Note Dear Ladies and Gentlemen, for the few weeks Symphony has been available I have worked with it quite extensively at customer's sites here in Germany as a consultant, programmer and occasional teacher. One of my major clients is a Munich based IBM-PC dealer who sells the Lotus programs with a large proportion of his PC sales. Before going into the details let me assure you that my motivation to write this letter is enthusiasm about this really excellent program mixed with the hope that future releases can still improve on its already astounding power, flexibility and ease of use. There are, however, some problems to which I would like to draw your attention. By far the biggest source of problems are the printer drivers. 1. Foreign Typewheels The LICS is a dramatic improvement on all the 7 bit software, and the printer drivers ingeniously try to materialize it on paper. It is very advantageous to have letters like our German a umlaut entered and printed at least crudely even on an American daisywheel printer. However it appears to have been forgotten that of course all daisywheel printers in Germany have German typewheels in them. The situation is so severe that Symphony can practically not be sold to someone needing a daisywheel printer in most of Europe. Proposal: The solution is simple. Activate the character translation not only when printing to a file but also when printing to a printer that is physically equipped with a foreign character set. Note: The only daisywheel printer that might have been used in Europe without any problems is the Diablo 630 ECS which has the full IBM character set. However, there is no suitable driver for it. 2. Two Or More Text Printers Many users have two printers on their system, mostly because they need a fast data printer and a letter quality printer. Symphony makes it a bit too difficult to switch from one printer to the other. The user has to exit from Symphony, then from Access. The user has to restart the Access System with the other Driver Set for the other printer. Not enough, the user finally has to modify the configuration by hand (printer port, baud rate, margins, possibly init strings or other printer related settings). Of course one can write a macro to take care of the configuration part but many newcomers might not be able to do this and it solves only half the problem. Proposal: For a quick solution you could rename SYMPHONY.CNF to LOTUS.CNF and tie the name to LOTUS.SET. If the user uses for example a DIABLO.SET let the configuration update go into DIABLO.CNF. A command to switch driver sets would be convenient. A final solution could be to allow more than one text printer driver in the set. To take care of the configuration settings you might allow more than one configuration settings sheet at least for the printer related settings. These printer related settings should automatically change when the user changes the printer driver. 3. Printer Reset You must not reset my printer. Imagine the proud owner of an Epson FX and his favorite download character set (like "Fatcity" from SET-FX) upgrading from 1-2-3 to Symphony. Ironically you even get in your own way when you issue a form feed on exit from Symphony after it has of course deleted the line counter in the printer with its stupid printer resets. Your chances to have the printer at top of page are one in sixty-six. You also get in your own way when the user issues a page-advance command after having left the print menu while the printer is reprogrammed to some other line height through the init string. If you do reset the printer you have to re-issue the init string before doing anything with the printer, not only printing but also line or page advances. I realize that there is the problem of novice users calling Support with "How can I stop my printer printing wide characters?" but there must be a better way to deal with this problem than resetting. Nowadays' printers are intelligent machines with their own memories and processors. Don't reset them. Proposal: One minimum solution would be to publish driver patches for those users who dislike Symphony depriving their printers of their costly features. The better solution would be to leave out the resets altogether and tell the users in the manual how to deal with the init string properly. If a user is able to issue a correct print mode command he or she will certainly also be able to issue a correct printer reset command. Please don't reset my printer. 4. Form Feed On Exit Why do you issue a form feed on exit from Symphony? If the user wants one he or she will issue one. If not the form feed will be a nuisance, especially when it does not end up at top of page (see above). I do not want to know how many Oh-no!s your users curse all over the world when they see their meticulously adjusted form move past the tractor feed. This problem will lose some importance after you get the reset problem solved but it will still annoy all those who do not like to waste paper for no good reason. Try to calculate how many trees one NOP can be worth. 5. Paper End Indicator (Epson Printers) Symphony refuses to print when the paper out indicator is on on an Epson printer. However, the printer can be ready despite the paper out condition, for example after an Esc 8 command. I wonder whether anybody has seen an LQ-1500 with cut sheet feeder working with Symphony. (I have - after grounding a wire in the printer cable by means of a soldering iron.) This may be an operating system problem. Yet you might still be able to circumvent it in the next release. 6. Page Length and Margins The page length setting is limited to 20..100 lines. However, many printers and applications far exceed these figures. I can use 216 lines on an Epson FX printer with 12 inch paper (Esc S 0 Esc 3 12dec) and there are forms with a page length of 3 inches. The limitation seems completely unnecessary. The figures do even look as if somebody conceived them arbitrarily. Still worse is the top and bottom margin limit of 0..10. Imagine a mechanical cut sheet feeder which feeds paper after every 14 inches of paper advance which is no rare occurence in the world of printers. You need a bottom margin of some 20 lines to operate such a feeder with 11 inch paper. The Epson LQ-1500 cut sheet feeder feeds paper after 65 lines (not 66 - don't ask me why). Imagine someone using standard paper but turned 90 degrees - not an unusual application. The user is stuck with Symphony because somebody at Lotus has tried to think for him and got it all wrong. My general recommendation regarding these problems: If you want to think for the user - do it right or don't do it. If you set arbitrary limits to some settings imagine the amount of frustration of somebody who has bought a Qume Sprint 11 with cut sheet feeder for some $2000+ only to find out that it is incompatible with Symphony because a Lotus programmer thought out that a bottom margin of ten lines might be the right figure to prescribe for the public. 7. SERVICES Print Settings Page Number Start-Page does not seem to have any effect. I tried unsuccessfully to print the sixth page of this letter from a DOC window. These are all the problems I can see in the handling of printers so far. Descriptions of some less severe problems follow. 8. Ctrl-Break (BREAK) does not work when printing a multiple entry report. 9. CALC produces ERR entries in a form window if a formula is used in the Definition Range. Proposal: Disallow CALC in Form windows. 10. The period used as argument separator is not feasible because macro commands like (RECALC A1.A2) do not work with this setting. Also function argument series can be ambiguous. Proposal: Remove all settings that include the period as an argument separator. 11. A macro routine has no way to use a particular window without reshuffling the window sequence with SERVICES Window Use. The WINDOW button is too dependent on what the situation was when the macro was started. Even interactively I suspect that in most cases the user does not want the window sequence to be altered with the Window Use command because in many applications the user will want one particular sequence of windows which he has designed beforehand. Proposal: Do not alter the window sequence when SERVICES Window Use is executed. Let the user modify the window sequence with some WINDOW button operation. 12. A report layout or any print layout depends on the setting of the window it was started from. This makes it difficult for the user to print one of several preprogrammed reports with the proper layout. It makes little sense to me when the layout of the report, once I have carefully designed it, changes just because I happen to start it from another window. Many users will be puzzled by the question why all of a sudden the report they have printed correctly the last time comes out corrupted this time. What's more, you may need lots of windows if you have lots of reports, and you may have to explain to an untrained operator to switch to a particular window to print a particular report. (Often you will have to set all the column widths differently for the different reports yet you have to use the same columns because a long Symphony database does not allow you to use more columns than absolutely necessary for memory consumption reasons.) Proposal: Do not modify the report layout when windows are changed. Ideally the report layout should be taken from the active window every time the report ranges are modified. (Technically you could achieve this by creating an invisible report window whenever the report ranges are modified. This window could also be used in commands like Query Settings Report in the Point mode.) 13. When entering text in a doc window the automatic justification does not work properly especially with indentation or even justification. Proposal: It would be very pleasant to have paragraphs justified properly just after having entered them. This could be coupled to the auto-justify setting in order to be able to switch it off. 14. Application Invoke DOS requires you to change disks on a diskette system, just because COMMAND.COM is missing on the Help and Tutorial Disk. However, Symphony does not tell to change disks. Neither does the installation description recommend to copy COMMAND.COM onto the Help and Tutorial Disk. (I bet you worked mainly on XTs.) Proposal: Let COMMAND.COM be copied to the Help and Tutorial Disk during first time installation. 15. No mention is made of the LQ-1500 as a text printer. Proposal: Apparently this printer fits nicely into the FX and RX family. If this is so, you could add the name and spare the novices some doubts. 16. On the German keyboard there is one character that IBM foolishly assigned the code 21dec. It is the "@" on top of the figure 3 key. Now every Symphony customer asks me sooner or later whether I could repair his or her keyboard because that key doesn't work. Finally I have some wishes I believe are in the interest of many Symphony users. I am very grateful for the cell and cellpointer functions but the real breakthrough would be CELLPOINTER("contents"). In the DOC window using Even justification the appearance of the text can easily be improved somewhat by making more intelligent use of punctuation characters. a) Instead of pulling the words apart it could often reduce the two spaces after periods to one and fit one more word into the line which certainly looks better. b) First put some spaces behind periods, commas, semicolons, colons, parentheses or similar characters before pulling words apart. (If the user needs exactly one space he or she may use the hard space.) Some more DOC window wishes are Backtab and Delete Word. (I miss my WordStar Ctrl-T.) Scrolling should go by some two thirds of a screen instead of the full screen. (Dear WordStar) And of course we would all love hyphenation, proportional spacing, column moves, visible pagination (instead of WHERE), widow and orphan suppression, suppression of empty lines if automatic pagination puts them on top of a new page and similar bells and whistles. Finally I would like to thank you for this outstanding program which may well turn out to have been a breakthrough towards a revolutionary and far more efficient approach to programming and problem solving with computers. Yours sincerely Hans-Georg Michna A.C.I. GmbH MicroSysteme